package com.blog.article.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.blog.article.entity.Blog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.blog.article.entity.Tag;
import com.blog.article.entity.VO.ArticleVO;
import com.blog.article.entity.VO.BlogVO;
import com.blog.article.entity.VO.UserVO;
import org.apache.ibatis.annotations.Param;
import org.yaml.snakeyaml.tokens.ValueToken;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author 苏离
 * @since 2021-12-10
 */
public interface BlogMapper extends BaseMapper<Blog> {
    //获取所有公开文章
    List<Blog> getBlog(Integer count);
    //更具当前用户id获取ta所有公开文章
    List<Blog> getBlogById(@Param("id") String id,@Param("count") Integer count);
    //更具标签获取所有公开文章
    Blog getBlogByTag(@Param("id") Integer id);
    //根据用户id获取当前用户所有公开文章的数量
    Integer getCountById(String id);
    //更具tagId获取文章id
    List<Integer> getArticleIdByTagId(@Param("count") Integer count,@Param("id") Integer id);
    List<Integer>getArticleIdByTagIdAll(@Param("id") Integer id);
    //分页获取当前用户所有文章
    List<Blog> getUserBlog(@Param("userId") String userId,
                           @Param("pageSize") Integer pageSize,
                           @Param("limit") Integer limit);
    //根具用户id获取用户名
    String getUserName(String userId);
    //获取公开文章的数量
    Integer getBlogCount();
    Integer getBlogCounts(String id);
    Integer getAllBlogCount();
    Integer getAllBlogByTitleCount(String title);
    //获取当前用户文章的数量
    Integer getUserBlogCount(String id);
    //查询所有标签
    List<Tag> getTags();
    //根据文章id查找文章
    ArticleVO getArticleById(Integer id);
    //根据文章id查找标签
    List<String> getTagById(Integer id);
    //Integer updateBlog
    UserVO getUserInfo(String id);
    //更新views
    boolean updateViews(Integer articleId);
    //搜索根据title模糊查询
    List<Blog> getBlogByTitle(@Param("title") String title);
    Integer getTitleCount(String title);

    List<Blog> getAllBlog(    @Param("pageSize") Integer pageSize,
                              @Param("limit") Integer limit);
    List<Blog> getAllBlogByTitle(@Param("title")String title,@Param("pageSize") Integer pageSize,
                                 @Param("limit") Integer limit);
//    获取所有公开文章的文章id
    List<Integer> getAllArticleId();
}
